import { createBrowserRouter, Navigate } from 'react-router-dom';
import MainLayoutWrapper from '../components/layout/MainLayoutWrapper';
import Home from '../pages/home';
import ProblemDetailPage from '../pages/problemDetail/problemDetailPage';
import PersonalPage from '../pages/personal';
import UserManagerPage from '../pages/user_manager';
import ProblemManagement from '../pages/admin/ProblemManagement';
import NotFoundPage from '../pages/not-found';
import ProblemsPage from '../pages/problems';

/**
 * 路由配置文件
 * 定义了应用的所有路由路径和对应的组件
 */
const router = createBrowserRouter([
  {
    path: '/',
    element: <MainLayoutWrapper />,
    children: [
      {
        index: true,
        element: <Navigate to="/home" replace />
      },
      {
        path: 'home',
        element: <Home />
      },
      {
        path: 'problems',
        element: <ProblemsPage />,
        // 题目列表页面，展示所有可用的题目
      },
      {
        path: 'contests',
        // 竞赛相关路由
        children: [
          {
            index: true,
            element: <div className="p-4">比赛列表页</div>,
            // 竞赛列表页面，展示所有可参加的竞赛
          },
          {
            path: ':id',
            element: <div className="p-4">比赛详情页</div>,
            // 特定竞赛的详情页面，通过ID参数标识
          }
        ]
      },
      {
        path: 'submissions',
        element: <div className="p-4">提交记录页</div>,
        // 提交记录页面，展示用户的所有提交历史
      },
      {
        path: 'dashboard',
        element: <div className="p-4">用户中心页</div>,
        // 用户中心页面，展示用户的个人信息和统计数据
      },
      {
        path: 'admin',
        // 管理员相关路由，需要管理员权限
        children: [
          {
            path: 'problems',
            // 题目管理相关路由
            children: [
              {
                index: true,
                element: <div className="p-4">题目列表管理</div>,
                // 题目列表管理页面，用于管理所有题目
              },
              {
                path: 'create',
                element: <ProblemManagement />,
                // 创建新题目的页面
              },
              {
                path: 'edit/:id',
                element: <ProblemManagement />,
                // 编辑现有题目的页面，通过ID参数标识
              }
            ]
          }
        ]
      },
      {
        path: 'user_manager',
        element: <UserManagerPage />,
        // 用户管理页面，用于管理系统用户
      },
      {
        path: 'user/profile',
        element: <PersonalPage />,
        // 当前登录用户的个人主页
      },
      {
        path: 'user/:id',
        element: <PersonalPage />,
        // 查看指定用户ID的个人主页
      },
      {
        path: 'person/:id',
        element: <PersonalPage />,
        // 个人主页路由，带id参数，用于从导航栏跳转
      }
    ]
  },
  {
    path: '/problems/:id',
    element: <ProblemDetailPage />,
    // 题目详情页面，展示特定题目的详细信息，通过ID参数标识
  },
  {
    path: '*',
    element: <NotFoundPage />,
    // 404页面，当访问不存在的路由时显示
  }
]);

export default router;